package com.t.bricks.bussiness.controller.loginuser;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.t.bricks.bussiness.controller.common.BaseController;
import com.t.bricks.bussiness.db.entity.loginuser.LoginUser;
import com.t.bricks.bussiness.model.loginuser.ConditionLoginUser;
import com.t.bricks.bussiness.service.loginuser.LoginUserService;
import com.t.bricks.model.MsgEmity;
import com.t.bricks.utils.modules.web.FindByPageParam;
import com.t.bricks.utils.spring.ModuleUtil;

@RestController
@Api(value="用户表", tags={"基本系统-用户表操作接口"})
@RequestMapping("/login/user/")
public class LoginUserController extends BaseController<LoginUserService<LoginUser>, LoginUser, ConditionLoginUser> {
	
	/**
	 * 控制操作,首位9不参与用6个数代表开关,0为不限制,1为限制
	 * 6个数的控制分别是:删除、修改、查询、导出、统计、步骤值可逆
	 * 其中前5个为'是否仅创建者可操作'后续为其它控制开关
	 */
	protected int enableTag = 9111111;

	/**
	 * 设置 检查待新增内容是否存在重复数据(多字段组合重复即重复)集合
	 * @return 返回的集合将覆盖父类的checkRepeatCombination成员,若返回null则不进行重复校验
	 */
	@Override
	protected List<String> setCheckRepeatCombination() {
		return Arrays.asList("sNo");
	}

	/**
	 * 设置 检查待新增内容是否存在重复数据(单独字段重复即重复)集合
	 * @return 返回的集合将覆盖父类的checkRepeatAlone成员,若返回null则不进行重复校验
	 */
	@Override
	protected Map<String, Integer> setCheckRepeatAlone() {
		return null;
	}

	/**
	 * 删除数据
	 * @param iVersion
	 * @param uId 表编号
	 * @return
	 */
	//[start]
	@ApiOperation(value="删除数据")
	@ApiImplicitParams({
		@ApiImplicitParam(name="iVersion", value="数据版本号", dataType="Integer", paramType="query", required=true),
		@ApiImplicitParam(name="uId", value="表编号", dataType="String", paramType="query", required=true)
	})
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8001, message="编号参数为空或不符合值"),
		@ApiResponse(code=8002, message="信息版本参数为空或不符合值"),
		@ApiResponse(code=7001, message="删除数据失败，系统中的数据可能已经被更新"),
		@ApiResponse(code=7002, message="删除数据失败，删除未能得到预期影响值"),
		@ApiResponse(code=7003, message="删除时发生异常"),
		@ApiResponse(code=7004, message="7004~7998、8003~8998为删除时发生的其它错误"),
		@ApiResponse(code=7999, message="删除成功")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/del")
	public MsgEmity del(Integer iVersion, String uId) {
		return super.del(iVersion, uId);
	}

//	/**
//	 * 新增数据
//	 * @param loginUser 用户表实体对象
//	 * @return
//	 */
//	//[start]
//	@ApiOperation(value="新增数据")
//	@ApiResponses({
//		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象}"),
//		@ApiResponse(code=400, message="错误的请求,请检查路径"),
//		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
//		@ApiResponse(code=1000001, message="内部请求密钥错误"),
//		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
//		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
//		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
//		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
//		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
//		@ApiResponse(code=8000, message="请求操作的参数为空"),
//		@ApiResponse(code=8001, message="内部待转换的类型为空"),
//		@ApiResponse(code=8002, message="服务端缺少json转换包的引用"),
//		@ApiResponse(code=8003, message="服务端缺少json转换包的引用"),
//		@ApiResponse(code=8004, message="待操作的数据不符合格式要求"),
//		@ApiResponse(code=8011, message="检查数据时:待存储的数据实体不能为null"),
//		@ApiResponse(code=8101, message="检查数据时:数据为null"),
//		@ApiResponse(code=8102, message="检查数据时:数据某个值超出最大长度限制"),
//		@ApiResponse(code=8103, message="检查数据时:数据某个值为空"),
//		@ApiResponse(code=8021, message="验证数据是否重复时:待存储的数据实体不能为null"),
//		@ApiResponse(code=8022, message="验证数据是否重复时:没有找到对应的dao实例,请检查代码规范"),
//		@ApiResponse(code=8023, message="验证数据是否重复时:无法调用checkRepeatByAdd且发生了异常"),
//		@ApiResponse(code=8024, message="验证数据是否重复时:检查数据是否重复失败"),
//		@ApiResponse(code=8025, message="验证数据是否重复时:代码错误,checkRepeatByAdd方法返回的结构不是MsgEmity"),
//		@ApiResponse(code=8026, message="验证数据是否重复时:数据重复"),
//		@ApiResponse(code=8028, message="验证数据是否重复时:检查数据是否重复失败"),
//		@ApiResponse(code=8311, message="补充数据时:待存储的数据实体不能为null"),
//		@ApiResponse(code=8312, message="补充数据时:设置默认值失败"),
//		@ApiResponse(code=7001, message="新增数据失败"),
//		@ApiResponse(code=7002, message="新增时发生异常"),
//		@ApiResponse(code=7003, message="7003~8998为新增时发生的其它错误")
//	})
//	//[end]
//	@RequestMapping(method={RequestMethod.POST}, value="/add")
//	public MsgEmity add(@RequestBody LoginUser loginUser) {
//		return super.add(loginUser);
//	}

	/**
	 * 修改数据
	 * @param loginUser 用户表实体对象
	 * @return
	 */
	//[start]
	@ApiOperation(value="修改数据", response=LoginUser.class)
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8000, message="请求操作的参数为空"),
		@ApiResponse(code=8001, message="内部待转换的类型为空"),
		@ApiResponse(code=8002, message="服务端缺少json转换包的引用"),
		@ApiResponse(code=8003, message="服务端缺少json转换包的引用"),
		@ApiResponse(code=8004, message="待操作的数据不符合格式要求"),
		@ApiResponse(code=8011, message="检查数据时:待存储的数据实体不能为null"),
		@ApiResponse(code=8012, message="检查数据时:待存储的数据实体信息版本号为空"),
		@ApiResponse(code=8013, message="检查数据时:待存储的数据实体信息版本号小于1"),
		@ApiResponse(code=8014, message="检查数据时:待存储的数据实体定义不能为null"),
		@ApiResponse(code=8015, message="检查数据时:待存储的数据实体定义中缺乏'isKey'的DataInfo注解"),
		@ApiResponse(code=8016, message="检查数据时:信息编号不能为空"),
		@ApiResponse(code=8101, message="检查数据时:数据为null"),
		@ApiResponse(code=8102, message="检查数据时:数据某个值超出最大长度限制"),
		@ApiResponse(code=8103, message="检查数据时:数据某个值为空"),
		@ApiResponse(code=8021, message="验证数据是否重复时:待存储的数据实体不能为null"),
		@ApiResponse(code=8022, message="验证数据是否重复时:没有找到对应的dao实例,请检查代码规范"),
		@ApiResponse(code=8023, message="验证数据是否重复时:无法调用checkRepeatByEdit且发生了异常"),
		@ApiResponse(code=8024, message="验证数据是否重复时:检查数据是否重复失败"),
		@ApiResponse(code=8025, message="验证数据是否重复时:代码错误,checkRepeatByEdit方法返回的结构不是MsgEmity"),
		@ApiResponse(code=8026, message="验证数据是否重复时:数据重复"),
		@ApiResponse(code=8028, message="验证数据是否重复时:检查数据是否重复失败"),
		@ApiResponse(code=8311, message="补充数据时:待存储的数据实体不能为null"),
		@ApiResponse(code=7001, message="修改数据失败，数据可能已经被删除"),
		@ApiResponse(code=7002, message="修改数据失败，系统中的数据可能已经被更新"),
		@ApiResponse(code=7003, message="修改数据失败，未能得到预期影响值(1)"),
		@ApiResponse(code=7004, message="修改数据失败，修改操作发生异常"),
		@ApiResponse(code=7005, message="7005~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/edit")
	public MsgEmity edit(@RequestBody LoginUser loginUser) {
		return super.edit(loginUser);
	}

	/**
	 * 根据记录编号取对象
	 * @param uId 表编号
	 * @return
	 */
	//[start]
	@ApiOperation(value="根据记录编号取对象", response=LoginUser.class)
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8001, message="编号参数能为空"),
		@ApiResponse(code=7001, message="数据不存在"),
		@ApiResponse(code=7002, message="查询发生异常"),
		@ApiResponse(code=7003, message="7003~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/find/id")
	public MsgEmity findById(String uId) {
		return super.findById(uId);
	}

	/**
	 * 根据关键值取对象集合
	 * @param loginUser 用户表实体对象
	 * @return
	 */
	//[start]
	@ApiOperation(value="根据关键值取对象集合", response=LoginUser.class)
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象集合}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8000, message="条件参数不能为空"),
		@ApiResponse(code=8001, message="内部待转换的类型为空"),
		@ApiResponse(code=8002, message="服务端缺少json转换包的引用"),
		@ApiResponse(code=8003, message="服务端缺少json转换包的引用"),
		@ApiResponse(code=8004, message="待操作的数据不符合格式要求"),
		@ApiResponse(code=7001, message="数据不存在"),
		@ApiResponse(code=7002, message="查询发生异常"),
		@ApiResponse(code=7003, message="7003~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/find/key")
	public MsgEmity findByKey(@RequestBody LoginUser loginUser) {
		return super.findByKey(loginUser);
	}

	/**
	 * 根据记录编号查询符合分页数据的某条记录
	 * @param uId 表编号
	 * @return
	 */
	//[start]
	@ApiOperation(value="根据记录编号查询符合分页数据的某条记录", response=LoginUser.class)
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8001, message="编号参数能为空"),
		@ApiResponse(code=7001, message="数据不存在"),
		@ApiResponse(code=7002, message="查询发生异常"),
		@ApiResponse(code=7003, message="7003~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/find/page/row")
	public MsgEmity findByPageRow(String uId) {
		return super.findByPageRow(uId);
	}

	/**
	 * 查询分页数据
	 * @param findByPageParam 分页查询条件组合类
	 * 结构参考: {"page": 分页请求信息对象, "orders": 排序信息对象集合, "sLikeStr": 全文检索, "condition": 查询条件对象}
	 * @return 返回查询结果
	 */
	//[start]
	@ApiOperation(value="查询分页数据", response=LoginUser.class)
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象集合}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=7001, message="查询数量失败且发生异常"),
		@ApiResponse(code=7002, message="查询数据发生异常，值为null"),
		@ApiResponse(code=7003, message="查询分页数据发生异常"),
		@ApiResponse(code=7004, message="7004~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/find/page")
	public MsgEmity findByPage(@RequestBody FindByPageParam<ConditionLoginUser> findByPageParam) {
		return super.findByPage(findByPageParam);
	}
	
	/**
	 * 创建Excel文件
	 * @param findByPageParam 分页查询条件组合类,注意:分页信息将被抛弃
	 * 结构参考:  {"page": 分页请求信息对象(被抛弃), "orders": 排序信息对象集合, "sLikeStr": 全文检索, "condition": 查询条件对象}
	 * return 返回结构中data为创建的经过压缩的Excel内容,接收端需要进行解压,msg为文件名
	 */
	//[start]
	@ApiOperation(value="创建Excel文件", notes="返回结构中data为创建的经过压缩的Excel内容,接收端需要进行解压,msg为文件名")
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": Excel内容}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=6001, message="没有指定模板"),
		@ApiResponse(code=6002, message="没有指定保存位置"),
		@ApiResponse(code=6003, message="保存路径错误"),
		@ApiResponse(code=6004, message="没有数据可导出"),
		@ApiResponse(code=6005, message="读取模板文件失败"),
		@ApiResponse(code=6006, message="保存文件时失败"),
		@ApiResponse(code=6100, message="待压缩字符串为空(文件内容为空)"),
		@ApiResponse(code=6101, message="压缩时发生异常"),
		@ApiResponse(code=7001, message="查询数据发生异常,执行的返回值为:null,预期值不应为null"),
		@ApiResponse(code=7002, message="查询导出文件用的数据发生异常"),
		@ApiResponse(code=7003, message="7003~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/export")
	public ResponseEntity<byte[]> export(@RequestBody FindByPageParam<ConditionLoginUser> findByPageParam) {
		return super.export(findByPageParam);
	}

	/**
	 * 修改当前用户密码
	 * @param sOldPass
	 * @param sNewPass
	 * @return
	 */
	//[start]
	@ApiOperation(value="修改当前用户密码", notes="只有当前用户才能修改密码,且必须提供当前密码")
	@ApiImplicitParams({
		@ApiImplicitParam(name="sOldPass", value="旧密码", dataType="String", paramType="query", required=true),
		@ApiImplicitParam(name="sNewPass", value="新密码", dataType="String", paramType="query", required=true)
	})
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象集合}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8001, message="无法获取当前用户信息"),
		@ApiResponse(code=8002, message="旧密码参数为空"),
		@ApiResponse(code=8003, message="新密码参数为空"),
		@ApiResponse(code=8004, message="没有查找到当前用户"),
		@ApiResponse(code=8005, message="没有查找到对应用户信息"),
		@ApiResponse(code=8006, message="用户被限制"),
		@ApiResponse(code=8007, message="提供的旧密码错误"),
		@ApiResponse(code=8999, message="密码无需修改"),
		@ApiResponse(code=7001, message="预期的修改未成功"),
		@ApiResponse(code=7002, message="修改时发生异常"),
		@ApiResponse(code=7003, message="7003~7998为修改时发生的其它错误"),
		@ApiResponse(code=7999, message="密码修改成功")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/password/edit")
	public MsgEmity editPass(String sOldPass, String sNewPass) {
		String currentLoginUserId = ModuleUtil.currentLoginUserId();//取当前登录用户
		return this.service().editPass(currentLoginUserId, sOldPass, sNewPass);
	}

	/**
	 * 重置密码
	 * @param uId 待重置密码的账号
	 * @param sPass 当前操作用户的密码
	 * @return
	 */
	//[start]
	@ApiOperation(value="重置密码", notes="只有当前用户和管理员(admin)才能重置密码")
	@ApiImplicitParams({
		@ApiImplicitParam(name="uId", value="表编号", dataType="String", paramType="query", required=true),
		@ApiImplicitParam(name="sPass", value="新密码", dataType="String", paramType="query", required=true)
	})
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象集合}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8001, message="用户编号为空"),
		@ApiResponse(code=8002, message="未能获取操作人员信息"),
		@ApiResponse(code=8003, message="仅允许管理员或该账号用户重置密码"),
		@ApiResponse(code=8004, message="当前操作用户信息错误"),
		@ApiResponse(code=8005, message="提供的操作用户密码错误"),
		@ApiResponse(code=8006, message="没有查找到待重置密码的用户"),
		@ApiResponse(code=8999, message="密码无需修改重置"),
		@ApiResponse(code=7001, message="预期的修改未成功"),
		@ApiResponse(code=7002, message="修改时发生异常"),
		@ApiResponse(code=7003, message="7003~7998为修改时发生的其它错误"),
		@ApiResponse(code=7999, message="密码修改成功")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/password/reset")
	public MsgEmity resetPass(String uId, String sPass) {
		return this.service().resetPass(uId, sPass);//重置密码
	}

	/**
	 * 根据用户编号设置用户类型
	 * @param uId 用户编号
	 * @param sType 用户类型
	 * @return
	 */
	//[start]
	@ApiOperation(value="根据用户编号设置用户类型")
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8001, message="用户编号为空"),
		@ApiResponse(code=8002, message="用户类型为空"),
		@ApiResponse(code=7001, message="指定用户不存在"),
		@ApiResponse(code=7002, message="修改未能得到预期影响值(预期1)"),
		@ApiResponse(code=7003, message="修改时发生异常"),
		@ApiResponse(code=7004, message="7003~7998为修改时发生的其它错误"),
		@ApiResponse(code=7999, message="设置成功")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/edit/type")
	public MsgEmity editUserType(String uId, Integer sType) {
		return this.service().editUserType(uId, sType);
	}
	
}
